<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>

<body>

</body>
<script type="text/javascript">
    // 求1+2!+3!+...+20!的值
    /* 
        阶乘:
            2 => 1*2
            3 => 1*2*3
            4 => 1*2*3*4
        求阶乘的和
            思路第一步:
                先求出一个数字的阶乘
                var num = 5;    //=> 5 * 4 * 3 * 2 * 1
                for(var i = num - 1; i > 0 ; i--){
                    num *= i;//num = num * i
                }
            思路第二步:
                再求他们的和
                    //当num = 1     => 1的阶乘
                    //当num = 2     => 2的阶乘
                    //当num = 3     => 3的阶乘
                    //当num = 4     => 4的阶乘 .....

                    //当num1为1的时候,累加1的阶乘,当num2的时候,累加2的阶乘....
                    var num = 6;    //=> 5 * 4 * 3 * 2 * 1
                    for (var i = num - 1; i > 0; i--) {
                        num *= i;//num = num * i
                    }
                    console.log(num);//num 一直累加下去
    */

    //统计所有的阶乘的和
    var sum = 0;
    for(var j = 5 ; j > 0 ; j--){
        //当j = 5的时候,得到下面的那个num就是5的阶乘
        //当j = 4的时候,得到下面的那个num就是4的阶乘
        //当j = 3的时候,得到下面的那个num就是3的阶乘
        var num = j;
        // var num = 6;    //=> 5 * 4 * 3 * 2 * 1
        for (var i = num - 1; i > 0; i--) {
            num *= i;//num = num * i
        }
        // console.log(num);
        sum += num;//使用sum 累加所有的阶乘的数,得到的sum就是所有阶乘的和
    }
    console.log(sum);
</script>

</html>